package com.example.demo.sensitive.dto.request;

import lombok.Data;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.List;

/**
 * @ClassName CheckTaskRequest
 * @Description 检查任务请求对象
 * @Author System
 * @Date 2025/9/19
 **/
@Data
public class CheckTaskRequest {

    /**
     * 任务名称
     */
    @NotBlank(message = "任务名称不能为空")
    private String taskName;

    /**
     * 目标数据库ID
     */
    @NotNull(message = "目标数据库不能为空")
    private Long databaseId;

    /**
     * 目标表名列表（空列表表示全量检查）
     */
    private List<String> targetTables;

    /**
     * 检查的敏感词ID列表
     */
    @NotEmpty(message = "敏感词不能为空")
    private List<Long> keywordIds;

    /**
     * 批处理大小
     */
    private Integer batchSize = 1000;

    /**
     * 检查配置
     */
    private CheckConfig checkConfig;

    @Data
    public static class CheckConfig {
        /**
         * 是否区分大小写
         */
        private Boolean caseSensitive = false;

        /**
         * 是否启用模糊匹配
         */
        private Boolean fuzzyMatch = false;

        /**
         * 最大结果数限制
         */
        private Integer maxResults = 10000;

        /**
         * 上下文长度
         */
        private Integer contextLength = 50;

        /**
         * 是否包含已删除记录
         */
        private Boolean includeDeleted = false;
    }
}
